﻿float4x4 WorldViewProjectionMatrix : WORLDVIEWPROJECTION;

// Основная текстура
texture CubeMap;

// Сэмплер основной текстуры
samplerCUBE CubeMapSampler = sampler_state 
{
    Texture = <CubeMap>;
    MagFilter = Linear;
    MinFilter = Linear;
    MipFilter = Linear;
    AddressU = Clamp;
    AddressV = Clamp;
    AddressW = Clamp;
};

// Входные данные вертексного шейдера
struct VertexInput
{
    float4 Position	: POSITION;
    float4 Normal : NORMAL;
};

// Выходные данные вертексного шейдера
struct VertexOutput 
{
    float4 Position	: POSITION;
    float4 Normal : TEXCOORD0;   
};
 
// Вертексный шейдер
VertexOutput VertexMain(VertexInput Input) 
{
    VertexOutput Output = (VertexOutput)0;
    Output.Position = mul(Input.Position, WorldViewProjectionMatrix);
    Output.Normal = Input.Normal;
    return Output;
}

float4 PixelMain(VertexOutput Input) : COLOR
{   
    float3 R = reflect(float3(1, 1, 1), Input.Normal);
    return texCUBE(CubeMapSampler,R.xyz);
}

// Техника
technique Main 
{
    pass p0
    {
        CullMode = None;
        VertexShader = compile vs_2_0 VertexMain();
        PixelShader = compile ps_2_0 PixelMain();
    }
}

